home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 21
/
AACD 21.iso
/
AACD
/
Programming
/
amigatalk
/
intuition
/
Border.st
< prev
next >
Wrap
Text File
|
2000-05-03
|
4KB
|
138 lines
"--------------------------------------------------"
" Border Class implements control of Amiga Borders."
" The method to actually display the Border is in "
" the Window Classes. "
"--------------------------------------------------"
Class Border :Glyph
!
leftEdge topEdge frontPen backPen drawMode count nextBorderName name
!
[
remove
<primitive 187 0 name>
|
registerTo: windowTitle
<primitive 187 5 windowTitle name>
|
setStartPoint: sPoint " Set the LeftEdge & TopEdge parameters: "
leftEdge <- sPoint x.
topEdge <- sPoint y.
<primitive 187 3 0 leftEdge name>.
<primitive 187 3 1 topEdge name>
|
getStartPoint
leftEdge <- <primitive 187 2 0 name>.
topEdge <- <primitive 187 2 1 name>.
^ leftEdge @ topEdge
|
getBorderPens
frontPen <- <primitive 187 2 2 name>.
backPen <- <primitive 187 2 3 name>.
^ frontPen @ backPen
|
setBorderPens: newPensPoint ! fp bp !
fp <- newPensPoint x.
bp <- newPensPoint y.
<primitive 187 3 2 fp name>.
<primitive 187 3 3 bp name>.
frontPen <- fp.
backPen <- bp
|
getDrawMode
drawMode <- <primitive 187 2 4 name>.
^ drawMode
|
setDrawMode: newDrawMode
<primitive 187 3 4 newDrawMode name>.
drawMode <- newDrawMode
|
getCount
count <- <primitive 187 2 5 name>.
^ count
|
setCount: newCount
<primitive 187 3 5 newCount name>.
count <- newCount
|
getNextBorderName
nextBorderName <- <primitive 187 2 6 name>.
^ nextBorderName
|
setNextBorderName: newBorder
<primitive 187 3 6 newBorder name>.
nextBorderName <- newBorder
|
setBorderPoint: thePt to: newPoint
<primitive 187 4 thePt (newPoint x) (newPoint y) name>
|
new: borderName
<primitive 187 1 2 borderName>.
name <- borderName.
nextBorderName <- nil.
leftEdge <- 0.
topEdge <- 0.
frontPen <- 1.
backPen <- 0.
drawMode <- 1.
count <- 2.
^ self
]
"---------------------------------------------------------------------"
" Line Class relies on Class Border to implement a lot of its methods."
"---------------------------------------------------------------------"
Class Line :Border
[
makeLine: lineName from: fPoint to: tPoint
super new: lineName.
super setBorderPoint: 1 to: fPoint.
super setBorderPoint: 2 to: tPoint.
^ self
]
"---------------------------------------------------"
" Triangle Class relies on Class Border to implement"
" a lot of its methods. "
"---------------------------------------------------"
Class Triangle :Border
[
makeTriangle: triangleName vert1: v1Point vert2: v2Point vert3: v3Point
super new: triangleName.
super setCount: 4.
super setBorderPoint: 1 to: v1Point.
super setBorderPoint: 2 to: v2Point.
super setBorderPoint: 3 to: v3Point.
super setBorderPoint: 4 to: v1Point.
^ self
]
"----------------------------------------------------"
" Rectangle Class relies on Class Border to implement"
" a lot of its methods. "
"----------------------------------------------------"
Class Rectangle :Border
[
makeRectangle: rectangleName from: fPoint to: tPoint ! x1 y1 x2 y2 !
x1 <- fPoint x.
y1 <- fPoint y.
x2 <- tPoint x.
y2 <- tPoint y.
super new: rectangleName.
super setCount: 5.
super setBorderPoint: 1 to: x1 @ y1.
super setBorderPoint: 2 to: x2 @ y1.
super setBorderPoint: 3 to: x2 @ y2.
super setBorderPoint: 4 to: x1 @ y2.
super setBorderPoint: 5 to: x1 @ y1.
^ self
]